iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0
自我挑戰組

一個營建系學生的韌體之路-自走車篇系列 第 21

【AMR_Day21】淺淺認識URDF、SDF

  • 分享至 

  • xImage
  •  

描述機器人的方法

URDF

Unified/Universal Robot Description Format(URDF),中譯統一機器人描述格式,直接看名字就能知道其意義-是一種大家約定好用來描述機器人的格式,需要用XML語法編寫,在ROS是採用此格式來模擬一台機器人,ROS中已存在用來解析URDF的package,其系統的關係圖如下圖。
其他描述格式還有等一下提到的SDF與我沒用過得collada格式,如果想從URDF轉換成SDF或collada已經有存在了的package,有興趣可以去看看~

urdf

基本格式

先看一個什麼都沒有的URDF~以<robot>為最外層,裡頭包裹著子元素<link><joint>
<link> :機器人的節點或零件,拿人類舉例為小腿、大腿。
<joint> :機器人的連接處,拿人類舉例為膝蓋關節處。

<robot>
	<link>
		...
	</link>
	<link>
		...
	</link>
	<joint>
		...
	</joint>
</robot>

<link> <joint>也有各自的子元素~

<link>的子元素有慣性<inertial>和視覺<visual>

<robot>
	<link>
		<inertial>
			...
		</inertial>
		<visual>
			...
		</visual>
	</link>
	...
</robot>

<joint>的子元素有父節點<parent>和子節點<child>

<robot>
	<joint>
		<parent link = "link parent" />
		<child link = "link child" />
	</joint>
</robot>

更多詳細介紹明天在寫URDF會解釋~

p.s.

要注意的是Gazebo也能讀取URDF,但不是主要的語法,SDF才是!

SDF

https://ithelp.ithome.com.tw/upload/images/20231006/20140433p8ALTwYnvy.png
Simulation Description Format(SDFormat、SDF),中譯模擬描述格式,用於描述機器人、環境、物件、照明的一種XML格式文件,是為了Gazebo而開法。與URDF最大的不同是後者僅針對『單一個』機器人去做描述,而SDF可以是模擬環境中的任何亦個物件,多個SDF可以組成一個模擬世界(.world)
SDF也有個官方網站,因為SDF可以描述的東西很多,很多xml標籤可以用,太複雜容易錯亂,可以透過官網先抓一個架構。
https://ithelp.ithome.com.tw/upload/images/20231006/20140433LvW1LA3pxE.png

基本格式

針對一個機器人描述的部份是使用<model> (相對URDF是<robot>)

<?xml version="1.0" ?>
<sdf version="1.5">
  <model>
    <link>
      ...
    </link>

    <joint>
      ...
    </joint>


  </model>
</sdf>

針對一個世界(.world),可以有好多個<model>、<light>、<scene>

<?xml version="1.0" ?>
<sdf version="1.5">
  <world name="default">
    <physics type="ode">
      ...
    </physics>
    
    <scene>
      ...
    </scene>

    <model name="box">
      ...
    </model>

    <model name="sphere">
      ...
    </model>

    <light name="spotlight">
      ...
    </light>

  </world>
</sdf>

個人經驗

SDF和URDF看起來相似,但其實有很多細節的不同,目前先專注在做URDF的介紹,有時間再來補充SDF。URDF可以直接被Gazebo使用,Gazebo會幫你專換成SDF後再載入。
現在放在一起比較是因為剛學的時候一直稿不懂兩個的差別,以為兩者轉換起來很簡單,但卻花了遠遠超過預期的時間在改寫上,最後來失敗了?總之挫折感滿滿,除此之外還有與之相關的Gazebo與ROS plugin的串接也是個問題。
目前的解方是完全放棄自己刻模型這件事,直接用Gazebo提供的汽車SDF做模擬。
(按照別人的教學可行,換成自己從頭來就不行了...)

再提的更細節一點點,其實有蠻多人分享差速輪車底的模型教學,但我之前很專注在想自己模擬出一台阿克曼底盤小車,踩了很多坑,不管是信心還是時間都大受打擊,暫時放棄了這個選擇,未來有機會想再好好補上,或有先進可以指點一下。

明天

更深入認識URDF!目標載入一台差速輪車車進Gazebo!
也給自己一個機會好好複習一下...說不定寫鐵人的過程中就開竅了?


上一篇
【AMR_Day20】ROS2的常見工具們—RViz、Gazebo
下一篇
【AMR_Day22】認識URDF多一點
系列文
一個營建系學生的韌體之路-自走車篇30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言